import * as fs from 'fs/promises';
import * as path from 'path';

/**
 * 检查指定路径的文件是否存在
 * @param filePath 要检查的文件路径
 * @returns 如果文件存在则返回true，否则返回false
 */
export async function fileExistsAtPath(filePath: string): Promise<boolean> {
    try {
        await fs.access(filePath);
        return true;
    } catch (error) {
        return false;
    }
}

/**
 * 确保目录存在，如果不存在则创建它
 * @param dirPath 目录路径
 */
export async function ensureDirectoryExists(dirPath: string): Promise<void> {
    try {
        await fs.access(dirPath);
    } catch (error) {
        // 目录不存在，创建它
        await fs.mkdir(dirPath, { recursive: true });
    }
}

/**
 * 将文件内容写入指定路径
 * @param filePath 文件路径
 * @param content 文件内容
 */
export async function writeFileContent(filePath: string, content: string): Promise<void> {
    const dirPath = path.dirname(filePath);
    await ensureDirectoryExists(dirPath);
    await fs.writeFile(filePath, content, 'utf-8');
}

/**
 * 从文件中读取内容
 * @param filePath 文件路径
 * @returns 文件内容
 */
export async function readFileContent(filePath: string): Promise<string> {
    try {
        return await fs.readFile(filePath, 'utf-8');
    } catch (error) {
        throw new Error(`读取文件失败: ${error instanceof Error ? error.message : String(error)}`);
    }
}

/**
 * 删除文件
 * @param filePath 要删除的文件路径
 */
export async function deleteFile(filePath: string): Promise<void> {
    try {
        await fs.unlink(filePath);
    } catch (error) {
        throw new Error(`删除文件失败: ${error instanceof Error ? error.message : String(error)}`);
    }
} 